Technical debt reduction using search based automated refactoring
نویسندگان
چکیده
Software refactoring has been recognised as a valuable process during software development and is often aimed at repaying technical debt. Technical debt arises when a software product has been built or amended without full care for structure and extensibility. Refactoring is useful to keep technical debt low and if it can be automated there are obvious efficiency benefits. Using a combination of automated refactoring techniques, software metrics and metaheuristic searches, an automated refactoring tool can improve the structure of a software system without affecting its functionality. In this paper, four different refactoring approaches are compared using an automated software refactoring tool. Weighted sums of metrics are used to form different fitness functions that drive the search process towards certain aspects of software quality. Metrics are combined to measure coupling, abstraction and inheritance and a fourth fitness function is proposed to measure reduction in technical debt. The 4 functions are compared against each other using 3 different searches on 6 different open source programs. Four out of the 6 programs show a larger improvement in the technical debt function after the search based refactoring process. The results show that the technical debt function is useful for assessing improvement in quality.
منابع مشابه
Minimizing Refactoring Effort through Prioritization of Classes based on Historical, Architectural and Code Smell Information
Improving a software system’s internal structure through regular refactoring is considered vital for its long and healthy life. However, despite its amenities, refactoring is not readily adopted by software development teams in industry mainly due to strict project deadlines and limited resources. Hence, they look for optimal refactoring recommendations that would incur minimal effort overhead ...
متن کاملTowards proactive management of technical debt by software metrics
Large software development organizations put enormous amount of effort not only for responding to continuous requests of customers but also for reengineering and refactoring activities to keep their product maintainable. Often rapid and immature feature deliveries over long period of time gradually decrease the product quality, and therefore the refactoring activities become costly and effort-i...
متن کامل"Refactoring" Refactoring
Code refactoring’s primary impetus is to control technical debt, a metaphor for the cost in software development due to the extraneous human effort needed to resolve confusing, obfuscatory, or hastily-crafted program code. While these issues are often described as causing “bad smells,” not all bad smells emanate from the code itself. Some (often the most pungent and costly) originate in the for...
متن کاملAssessing technical debt by identifying design flaws in software systems
4 Tough time-to-market constraints and unanticipated integration or 5 evolution issues lead to design tradeoffs that usually cause flaws in 6 the structure of a software system. Thus, maintenance costs grow 7 significantly. The impact of these design decisions, which provide 8 short-term benefits at the expense of the system_s design integrity, is 9 usually referred to as technical debt. In thi...
متن کاملTrueRefactor: An Automated Refactoring Tool to Improve Legacy System and Application Comprehensibility
Manual refactoring is a complicated process requiring intimate knowledge of the software design and underlying intended behavior of a system. This knowledge is not always available. Fully automated refactoring, using a meta-heuristic based search that is dependent on software quality metrics and code smells as a guide, eliminates the need for the developer to be intimately connected to the soft...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
- Journal of Systems and Software
دوره 120 شماره
صفحات -
تاریخ انتشار 2016